﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using GC2.Bussines.BMSeguridad;
using GC2.Entities.Seguridad;
using GC2.ExceptionHandler;

public partial class BMSeguridad_AdministracionUsuarios : GenericPage
{
    private ExceptionConstructor exNew = new ExceptionConstructor();

    private List<Usuarios> usuariosSource
    {
        get 
        {
            return (List<Usuarios>)ViewState["usuariosSource"];
        }
        set
        {
            ViewState["usuariosSource"] = value;
        }
        
    }

    private int usuarioActual
    {
        get 
        {
            if (ViewState["usuarioActual"] != null)
                return (int)ViewState["usuarioActual"];
            else
                return 0;
        }
        set 
        {
            this.ViewState["usuarioActual"] = value;
        }
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            SetearCultura();
            SetearConexion();
            ////string strEvent =  ClientScript.GetPostBackEventReference(OkButton, string.Empty);
            //string strEventGv = ClientScript.GetPostBackEventReference(gvUsuarios, string.Empty);
            ////  OkButton.Attributes.Add("onclick", strEvent);
            if (!this.IsPostBack)
            {
                //AutenticacionUsuario();
                //int iId_Usuario = System.Convert.ToInt32(Session["Id_Usuario"]);
                //string srtPermiso = ControlPermisos((int)UI_Permissions.frmUsuarios, iId_Usuario);
                //if (srtPermiso != "S")
                //{
                //    Response.Redirect("~/Error.aspx", false);
                //}

                btnNuevo.Visible = false;

                // UpdatePanel5.Visible = false;
                // this._presenter.OnViewInitialized();
            }
            //// this._presenter.OnViewLoaded();
        }
        catch (Exception ex) { ErrorUI(ex); }
    }

    private void GridDataBound()
    {
        gvUsuarios.DataSource = usuariosSource;
        gvUsuarios.DataBind();

    }

    /// <btnNuevo_Click>
    /// Se llama cada vez que se aprieta el botón Nuevo. Redirecciona a la
    /// página de tabs para crear un nuevo Usuario.
    /// 
    /// Moficado por: AS Fecha: 12/07/2007
    /// Motivo del Cambio:
    /// 
    /// </btnNuevo_Click>
    /// <returns>
    /// </returns>
    protected void btnNuevo_Click(object sender, EventArgs e)
    {
        try
        {
            Usuarios usuarios = new Usuarios();
            Session["Usuario"] = usuarios;
            Response.Redirect("AdministracionUsuariosTab.aspx", false);
        }
        catch (Exception ex) { ErrorUI(ex); }
    }

    protected void gvUsuarios_SelectedIndexChanged1(object sender, EventArgs e)
    {
        try
        {
            BMUsuarios bmUsuarios = new BMUsuarios(Connection);
            usuarioActual = (int)gvUsuarios.SelectedDataKey.Value;
            List<Usuarios> usuariosAux = new List<Usuarios>();
            usuariosAux = usuariosSource;

            usuariosSource = usuariosAux;
            //UpdatePanel3.Visible = false;

            Label label = new Label();
            Usuarios usuario = new Usuarios();
            label = (Label)gvUsuarios.Rows[gvUsuarios.SelectedIndex].Cells[0].FindControl("Id_usuario");
            usuario.Id_Usuario = int.Parse(label.Text.Trim());
            usuario = bmUsuarios.BMUsuariosGetOne(usuario);
            Session["Usuario"] = usuario;
            Session["Accion"] = 2;
            Response.Redirect("AdministracionUsuariosTab.aspx", false);
         }
         catch (Exception ex) { ErrorUI(ex); }
    }
    protected void gvUsuarios_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        try
        {
            gvUsuarios.PageIndex = e.NewPageIndex;
            GridDataBound();
        }
        catch (Exception ex) { ErrorUI(ex); }
    }

    protected void btnBuscar_Click(object sender, EventArgs e)
    {
        try
        {
            buscarUsuariosConFitro();
        }
        catch (Exception ex)
        {
            string InfoError = (exNew.ProcessUnhandledException(ex)).ToString();

            Session["Error"] = InfoError;
            Session["UrlOrigen"] = "~/BMSeguridad/Default.aspx";
            Response.Redirect("~/Error.aspx", false);
        }
    }

    /// <Summary>
    /// Se llama cada vez que se aprieta el botón Cancelar. Redirecciona a ls
    /// página por defecto del módulo de seguridad.
    /// 
    /// Moficado por: MDT  Fecha: 26/06/2007
    /// Motivo del Cambio:
    /// 
    /// </Summary>
    /// <returns></returns>
    protected void btnCancelar_Click(object sender, EventArgs e)
    {
        try
        {
            Response.Redirect("../Default.aspx", false);
        }
        catch (Exception ex) { ErrorUI(ex); }
    }

    protected void gvUsuarios_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        try
        {
            BMUsuarios bmUsuarios = new BMUsuarios(Connection);
            Label label;
            Usuarios usuario = new Usuarios();
            label = (Label)gvUsuarios.Rows[e.RowIndex].Cells[0].FindControl("Id_usuario");
            usuario.Id_Usuario = System.Convert.ToInt32(label.Text);

            usuario = bmUsuarios.BMUsuariosGetOne(usuario);
            usuario.Fecha_Hasta = DateTime.Parse(DateTime.Now.ToString("dd/MM/yyyy"));
            bmUsuarios.BMUsuarioDelete(usuario);

            buscarUsuariosConFitro();
        }
        catch (Exception ex) 
        { 
            ErrorUI(ex); 
        }
    }

    private void buscarUsuariosConFitro()
    {
        try
        {
            BMUsuarios bmUsuarios = new BMUsuarios(Connection);
            Usuarios usuariosSearch = new Usuarios();
            List<Usuarios> usuariosAux = new List<Usuarios>();
            if (txtEmail.Text.Trim() != "")
            {
                usuariosSearch.Correo_Electronico = txtEmail.Text.Trim();
            }
            if (txtLogin.Text.Trim() != "")
            {
                usuariosSearch.Login = txtLogin.Text.Trim();
            }
            if (txtUsuario.Text.Trim() != "")
            {
                usuariosSearch.Apellido = txtUsuario.Text.Trim();
            }

            if (txtEmail.Text.Trim() == "" && txtLogin.Text == "" && txtUsuario.Text.Trim() == "" && cboEstado.Text == "")
            {
                usuariosSource = bmUsuarios.BMUsuariosGetAll();
                GridDataBound();
            }
            else
            {
                usuariosSource = bmUsuarios.BMUsuarioSearch(usuariosSearch);
                if (cboEstado.Text != "")
                {
                    foreach (Usuarios usuarios in usuariosSource)
                    {
                        if (cboEstado.Text == "A" && usuarios.Fecha_Hasta == null)
                        {
                            usuariosAux.Add(usuarios);
                        }
                        if (cboEstado.Text == "B" && usuarios.Fecha_Hasta != null)
                        {
                            usuariosAux.Add(usuarios);
                        }
                    }
                    usuariosSource.Clear();
                    if (usuariosAux.Count > 0)
                    {
                        usuariosSource = usuariosAux;
                    }
                }
                GridDataBound();
            }
        }
        catch (Exception ex) { ErrorUI(ex); }
    }

    protected void gvUsuarios_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        try
        {
            Label label;
            string fechaAux;
            LinkButton link;
            if(e.Row.RowType == DataControlRowType.DataRow)
            {
                 label = (Label)e.Row.Cells[4].FindControl("lblFechaBaja");
                 if (label.Text != "")
                 {
                      link = (LinkButton)e.Row.Cells[4].FindControl("LinkButton1");
                      link.Visible = false;                     
                      //label.Text = DateTime.Parse(DateTime.Parse().ToString("dd/MM/yyyy")).ToString();
                      fechaAux = label.Text;
                      fechaAux = fechaAux.Remove(11);
                      label.Text = fechaAux;
                 }               
            }
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
}






